package org.seratic.enterprise.movil.chatconexion;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Vector;

import org.seratic.enterprise.movil.chatconexion.ConexionChat;
import org.seratic.enterprise.movil.chatsocket.com.ConexionSocket;
import org.seratic.enterprise.movil.chatsocket.com.ConexionSocketAndroid;
import org.seratic.enterprise.movil.chatsocket.manager.ClienteListener;
import org.seratic.enterprise.movil.chatsocket.manager.ClienteManager;
import org.seratic.enterprise.movil.chatsocket.vo.ClienteInfo;

public class ConexionChatSocketAndroid implements ConexionChat {
	private ClienteManager cm;
	ConexionSocket cxSocket;
	String opciones[];

	public ConexionChatSocketAndroid(ClienteListener cl, ClienteInfo ci,String opciones[]) {
		super();
		this.opciones=opciones;
		cm = new ClienteManager(cl,this);
		cm.setClienteInfo(ci);
		cm.start();
	}

	public void conectar() {
		if (opciones==null)
			return;
		try {
			cxSocket =  new ConexionSocketAndroid();
			cxSocket.conectar(opciones[0],Integer.parseInt(opciones[1]));
			
		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void desconectar() {
		cm.stop();
	}

	public void enviarMensaje(String mensaje) {
		cm.enviar(mensaje);
	}

	public void enviarMensajeTo(String mensaje, String idCliente) {
		cm.enviarTo(mensaje, idCliente);
	}

	public Vector getClientesCercanos() {
		return cm.getListaUsuariosCercanos();
	}

	public DataInputStream getDataInputStream() {
		return cxSocket.getDataInputStream();
	}

	public DataOutputStream getDataOutputStream() {
		return cxSocket.getDataOutputStream();
	}

	public void setClienteListener(ClienteListener cl) {
		cm.setClienteListener(cl);
	}
}
